home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 526-550 / disk_542 / chemnimate / language.doc < prev    next >
Text File  |  1992-05-06  |  23KB  |  640 lines

  1. ›33;1m
  2.  
  3.  
  4. =============================================================================
  5.              CHEMNIMATE 0.8 alpha-release       LANGUAGE MANUAL
  6. =============================================================================
  7.  
  8.    Klaas  van Gend
  9.    Hoekerstraat 9b
  10.    5987 AN  EGCHEL
  11.    THE NETHERLANDS
  12.  
  13. ›0;31m
  14. REVISION HISTORY
  15. ----------------
  16. EXT. 2  Klaas        08-Jul
  17. EXT. 3    van Gend    22-Jul
  18. REV. 1    W. Huis        27-Jul    (My English Teacher) He corrected this manual.
  19. REV. 2    Raymond Knaapen    07-Aug    added some things Klaas stupidly had forgotten.
  20. EXT. 4  KP van Gend    26-Aug  
  21.  
  22.  
  23. ›3mCONTENTS:›0m
  24.  
  25. 0 Preface
  26.  
  27. 1 The command-line
  28.  .1 What does a command look like?
  29.  .2 What can be parameters ?
  30.  .3 What are expressions?
  31.  .4 The use of expressions.
  32.  
  33. 2. The commands,
  34.  .1 Data
  35.  .2 Repeat
  36.  .3 Display
  37.  .4 Debugging
  38.  .5 Show
  39.  .6 Display part II.
  40.  .7 Text
  41.  .8 Change 
  42.  .9 Assignation
  43.  
  44. 3. Data-line/DisplayModes
  45.  .1 DisplayMode 0. 
  46.  .2 DisplayMode 1.
  47.  .4 DisplayMode 3.
  48.  
  49. 4. The Errors.
  50.  
  51.  
  52.  
  53.  
  54. ›32;1m/****** 0 **************PREFACE**********************/›31;0m
  55.  
  56. This file will explain you how to programme ChemniMaTe.If you don't have any
  57. experience with programming-languages, it shouldn't be a good idea to start 
  58. with this one, as it isn't a very good example of a well-structured 
  59. clearly-defined language. It was written piece by piece, command after 
  60. command. 
  61.  
  62. About this manual:
  63. All normal text is displayed normally (in MuchMore). All chapter titles are
  64. in black. All examples are in yellow. If you want to load it into some 
  65. textprocessor you have to remove all codes for coloured characters.
  66. Otherwise, sending it to a printer will result in some spaghetti. In the
  67. LhArc-Archive, you'll find a program to remove all these codes.
  68.  
  69.  
  70.  
  71.  
  72.  
  73. ›32;1m/****** 1 ***********A COMMAND LINE********************/
  74.  
  75. 1.1 WHAT DOES A LINE LOOK LIKE ?›31;0m
  76.   Well, a line consists of some text (sometimes no text at all) and should 
  77. always end with a hard-return. An empty line is ignored. Text put after a 
  78. semicolon (';') should be considered as comment. If a line only consists of 
  79. a semicolon or spaces/tabs, nothing will happen.
  80.   In all other cases, the first word in the line should be a command,
  81. followed by (when necessary) parameters(values, vars, expressions or 
  82. strings). Only one command per line is allowed.
  83. Of course, in a DATA-line (see below) there is no command, so take care the
  84. line starts with something other than an alphanumeric character.
  85.   Make sure you enter the right number of parameters, and in the right order.
  86. Always first the numeric ones and after that the strings.
  87.  
  88. Example 1: 
  89. ›33m    Text 20 [#i# + 5] "This is a string" ;comment›31m
  90. ^   ^    ^  ^
  91. |spaces/tabs at the beginning are ignored.
  92.     |this is the command
  93.          |this is a value
  94.         |this is an expression
  95.  
  96. ChemniMaTe is case-insensitive, i.e. it doesn't differ whether you enter
  97. commands uppercase or lowercase. 
  98. If the line contains more text than only the first word, all other text is
  99. ignored (except for strings :->) 
  100. This is useful when entering codes, but I'll explain that later.
  101.  
  102.  
  103. ›32;1m 1.2 What can be parameters?›31;0m
  104. There are a few kinds:
  105.  
  106. nummeric values:
  107.   Are always integers (= no floating point), can be negative or positive.
  108.   You shouldn't use values greater then ±1000, as there is no need to. The
  109.   programme can handle far bigger values, but it isn't really reliable.
  110.  
  111. vars:
  112.   Vars are values represented by a name. You can assign a value to that name.
  113. Example 2:
  114. ›33mI:= 3; put value 3 in #i# ›31m
  115.   When you specify #i# as one of the parameters in another line, ChemniMaTe
  116.   will insert the value 3 instead of it.
  117.   Only numeric values can be assigned to a var, no strings.
  118.   Except in assignation, they're always preceded and followed by a '#'.
  119.   This is to indicate that between these # # is a varname.
  120.   You can do everything with it,i.e. similar to what you can do with values.
  121.   At the moment four names are supported:
  122.   #i#   use when neccessary.
  123.   #j#    use when neccessary.
  124.   #dAn#    always contains the Delta-Angle. This is what in the next step of
  125.     turn will be added to the Angle.
  126.   #Ang# always contains the Angle under which the molecule is seen.
  127.   Note that case is not important for ChemniMaTe.
  128.  
  129. strings:
  130.   These always begin AND end in a double quote ( " ).
  131.   No processing is possible at the moment.
  132.   Make sure they are always last in a line and that there isn't a semicolon 
  133.   within the string. The result would then be unpredictable.
  134.  
  135. expressions:
  136.   See below, paragraph 1.3.
  137.  
  138. ›32;1m 1.3 What are expressions?›31;0m
  139. When you want to add 2 and 3, the result equals five. If you want to,
  140. ChemniMaTe can do this for you:
  141. Example 3:
  142. ›33mI:= [3 + 2]›31m
  143. After this line, #i# will contain the value 5.
  144. Example 4:
  145. ›33mI:= [#i# * 5]›31m
  146. In example 4, the value of #i# is multiplicated by 5.
  147.  
  148. An expression always consists of:
  149. - '[' and ']' which precede and end ANY expression.
  150. - TWO values, expressions or vars.
  151. - ONE modifier. 
  152.   choose from:    * multiply
  153.         / divide
  154.         % rest of a divide (12%4 = 0, 15%4 = 3, 16%4 =0)
  155.         + add
  156.         - subtract
  157. Oh, by the way, ChemniMaTe only supports integers, (thus: 73 , -20, not: 2.5)
  158. and will round any result to floor.
  159. This is why [15 / 4] will equal 3 and neither 3.75 nor 4.
  160.  
  161. This is wrong: ›33m[ #i# + 6 * 8]›31m
  162. It should be: ›33m[#i# + [6*8] ]›31m
  163.  
  164. As you can see, nested expressions are allowed, as long as the number of
  165. '[' and ']' stays the same. (otherwise an error will be generated).
  166. Always use enough spaces, to aviod confusion, especially when when using 
  167. more than one pair of brackets. ChemniMaTe uses fully recursive routines to
  168. parse the expressions, the only limitation of the size of an expression is
  169. the length of a single line: 255 characters.
  170.  
  171. ›32;1m 1.4 The use of expressions.›31;0m
  172. Well, let's say you have 5 balls with the numbers 8 to 12 and you want them
  173. to have lines to balls 5 to 9:
  174. Example 5
  175. ›33m I:= 8         ;assign value to #i#
  176.  Repeat 5 times        ; repeat 5 times.(times is ignored)
  177.    CA #i# 4lin to [#i# - 3]; see below for CA. ('lin' and 'to' are ignored)
  178.    I:= [#i# + 1]    ; add one to #i#
  179.  EndRepeat
  180. ›31m
  181.  
  182. Put a ball in the centre of the screen, and move it away with increasing 
  183. speed. 
  184. Example 6
  185. ›33mData 1
  186.   0 0 0 C0 0 ;1 just a ball.
  187. EndData
  188.  I:= 0    
  189.  Repeat 15
  190.    CR ball 1 0r #i#    ;Change rel. see below. ('ball' and 'r' are ignored)
  191.    I:= [#i# + 1]
  192.  EndRepeat
  193. ›31m
  194.  
  195.  
  196.  
  197.  
  198.  
  199. ›32;1m/********** 2 *******The commands**********************/›31;0m
  200.  
  201. Commands are one word. It is the first thing that should occur in a line
  202. (except for a DATA line...) after (optionally) preceding spaces. After any
  203. command a space should be entered.
  204. The commands are divided into a few different sections.
  205. ›1m<value>›0m    means a value/var/expression which ALWAYS must be given.
  206. ›1m"string"›0m    means a string. Should always be present when necessary.
  207. The number preceding a command in this section, represents the token of the
  208. command. Don't enter it (And forget the existence), as ChemniMaTe internally
  209. replaces the command by the token.
  210.  
  211.  
  212. ›32;1m 2.1 Data›31;0m
  213. 0x10  ›1mDATA <first> ›0m
  214.  Announces the start of some DATA-lines. The first line is read to be 
  215.  belonging to ball number <first>. 
  216.  See chapter ### for the syntax of a dataline.
  217.  
  218. 0x11  ›1mEndData›0m
  219.  Announces the end of DATA-lines. When you enter a dataline after this command
  220.  it will result in a Syntax Error. No values are required.
  221.  
  222. 0x12  ›1mANIM "name"›0m
  223.  This one means nothing. It should be the first command in an animation-script.
  224.  The only reason why it exists is called 'Raymond Knaapen' -> He wanted to 
  225.  make the language look more like PASCAL. It should indicate the name of
  226.  the script. Please do not use it in scripts for the Amiga-version, as i might
  227.  in future use this one to set ChemniMaTe to displaymode 3 automatically.
  228.  
  229. ›32;1m 2.2 Repeat›31;0m
  230. 0x20  ›1mRepeat <times>›0m
  231.  Repeat the sequence between this command and the corresponding 'EndRepeat'
  232.  <times> times. Note that nested Repeats are allowed.
  233. Example 7
  234. ›33m Repeat 2        ;first repeat.
  235.    T "hi"
  236.    Repeat 2        ;  second repeat
  237.      T "Goodbye"
  238.    EndRepeat        ;  second repeat
  239.  EndRepeat        ;first repeat.›31m
  240.  Will result in:
  241. ›3m#text: hi
  242. #text: Goodbye
  243. #text: Goodbye
  244. #text: hi
  245. #text: Goodbye
  246. #text: Goodbye›0m
  247.  
  248. 0x21  ›1mEndRepeat›0m
  249.  Announces the end of a repeat (For BASIC-freaks: "Next").
  250.  If no corresponding Repeat is given, it will result in an error statement.
  251.  After this command, ChemniMaTe will return to the line after the
  252.  Repeat, when the counter of repeats allows for that.
  253.  
  254. 0x22  ›1mLoop›0m
  255.  Announces the begin of a Loop-Until sequence.
  256.  All statements between Loop and Until will be executed till Until knows
  257.  it's time to stop.
  258.  
  259. 0x23  ›1mUntil <value1> <value2>›0m
  260.  This is the condition-checker. Returns to the line after Loop when
  261.  <value1> is smaller than <value2>.
  262.  It is a good idea to put '>=' between the values (ChemniMaTe will
  263.  ignore it), but you know when Until will stop.
  264. Example 8
  265. ›33m Loop 
  266.    Show 1 frame 1 to 10    ;show 1 time all balls from 1 to 10.
  267.  Until #Ang# >= 48    ;note that '>=' is ignored.›31m
  268.  Will turn the molecule around until Angle is 48. Note that when #ang# is
  269.  already bigger than 48 (thus range: 48 to 63), Show will be executed once.
  270.  
  271. ›32;1m 2.3 Display›31;0m
  272.  
  273. 0x30  ›1mLines <#On#/#Off#>›0m
  274.  Turns the displaying of lines on/off.
  275. Example 9
  276. ›33mLines #Off#    ;turn lines off›31m
  277.  When starting a script, the default is #On#.
  278.  
  279. 0x31  ›1mBalls <#On#/#Off#>›0m
  280.  Turns displaying balls on/off.
  281.  Default is #On#.
  282.  
  283. 0x32  ›1mWait <frames>›0m
  284.  Wait a number of frames. one frame is 1/25 (PAL) second.
  285.  Thus to wait 2 seconds:
  286. Example 10
  287. ›33mWait [2 * 25]    ;2 seconds.›31m
  288.  
  289. 0x34  ›1mDisplayMode <which one>›0m
  290.  Change the display to the specified display mode.
  291.  0: standard 3-d mode
  292.  1: 2-d watching from above.  
  293.  3: reserved for Raymond's projection (not implemented yet).
  294.  See Data-Line/DisplayModes (Section 3) for discussing how everything works.
  295.  
  296. ›32;1m 2.4 debugging›31;0m
  297. 0x41  ›1mDebug <from> <to>›0m
  298.  This command is one of the oldest commands available. It displays the full
  299.  array of the balls <from> up to and including <to> on the 'STDIO' -> the
  300.  Cli/Shell ChemniMaTe was started from. 
  301.  In the array, the dimensions are as followed:
  302.  0-4 (the first five): See DisplayMode 0.
  303.  5-7 (the last three): Carthesian coordinates X,Y,Z. (Not important for users)
  304.  
  305. 0x45  ›1mSkip›0m
  306.  Skip a piece of code until a 'EndSkip' is entered.
  307.  This is useful when writing large animations, as you can prevent pieces
  308.  from being executed. (At least, that's what I implemented these two for.).
  309. 0x46  ›1mEndSkip›0m
  310.  Is the counterpart of Skip. (See there).
  311. Example 11
  312. ›33mSkip
  313. T "This won't appear at the Stdio-console!"
  314. Wait 50L    ;we won't wait
  315. EndSkip
  316. Show 1 3 5    ;This show will be executed.›31m
  317.  
  318. ›32;1m 2.5 Show›31;0m
  319. 0x50  ›1mShow <times> <from> <to>›0m
  320.  This command is the most important one: it displays the balls & lines in the
  321.  way which is defined by the current displaymode. It will do it <times> times,
  322.  and it will display the balls <from> up to and including <to>. It also recal-
  323.  culates Angle and DeltaAngle.
  324.  Note: it does page-swapping and the clearing of the next page.
  325.  
  326. 0x51  ›1mShowNS <from> <to>›0m
  327.  Displays the balls <from> up to and including <to> on the non-displayed
  328.  screenpage. This means two differences with "Show": only ONE frame, and not
  329.  even a complete frame, as it isn't displayed nor the next page is cleared. It
  330.  does do recalculating Angle & DeltaAngle anyway. Using this command only
  331.  doesn't make anything visible... You need to call a 'Show' or a 'SPages' to
  332.  do that.
  333.  
  334. 0x52 ›1mSPages›0m
  335.  Swaps the two screenpages and clears the non-visible one. When drawing or
  336.  displaying text after this command, it will be put on the non-visible page.
  337.  Use this command to make all changes (done by 'THeader,TFooter,Text,ShowNS')
  338.  visible.
  339.  
  340. ›32;1m 2.6 Display part II.›31;0m
  341. 0x60  ›1mAngle <value>›0m
  342.  Set the angle to <value>. You shouldn't use this command anymore, as it is
  343.  replaced by ANG:= . This command exists for compatibility with previous
  344.  versions only.
  345. 0x61  ›1mAngleD <value>›0m
  346.  Set the Delta-angle to <value>. Delta Angle is the speed of turning.
  347.  You shouldn't use this command anymore, as it is replaced by DAN:= . This 
  348.  command exists for compatibility with previous versions only.
  349.  
  350. 0x62  ›1mMiddle <x> <y>›0m
  351.  Set the middle of the display (in Carthesian coordinates it should be (0,0,0))
  352.  to the coordinates given by ( <x> , <y> ) . (0,0) is in the upper left corner.
  353.  defaultvalues of <x> and <y> are (180, 125) for PAL users.
  354.  
  355. ›32;1m 2.7 Text›31;0m
  356. 0x70  ›1mTHeader "string"›0m
  357.  Display the string as Header (text above the screen) on the screen. Note that 
  358.  only the first 40 characters are displayed.
  359.  
  360. 0x71  ›1mTFooter "string"›0m
  361.  Display the string as footer (text below the screen) on the screen. Note that
  362.  only the first 40 characters are displayed.
  363.  
  364. 0x72  ›1mText <x> <y> "string"›0m
  365.  Put the string on this frame at (x,y). When the string is larger than the
  366.  screen, then the string is truncated until it fits. It is only displayed
  367.  at the current front-frame. As soon as you use a Show, it becomes invisible.
  368.  It is a good idea to do it this way:
  369. Example 12
  370. ›33mText (32,45) "This will be displayed."›31m
  371.  Thus, putting (,) around the coordinates.
  372.  
  373. 0x73  ›1mT "string"›0m
  374.  Put a string on the stdio (the CLI/Shell ChemniMaTe was started from).
  375.  Only useful for debugging, I think.
  376.  
  377. ›32;1m 2.8 Change›31;0m
  378. 0x80  ›1mCR <ballnr> <what> <delta>›0m
  379.  Change <what> of ball number <ballnr> with delta -> thus add delta to the
  380.  current value. 
  381.  In DisplayMode 0 (3-Dimensional),
  382.   <what> :    0r   -> the radius
  383.         1ang -> the angle
  384.         2hei -> the heigth
  385.         3typ -> the type of the ball.
  386.         4lin -> the ball which a line should be drawn to.
  387.  In DisplayMode 1 (2-Dimensional), is '2hei' not used.
  388.  
  389. 0x81  ›1mCA <ballnr> <what> <value>›0m
  390.  Change <what> of <ballnr> to <value>
  391.  See for further information: CR.
  392.  
  393. 0x82  ›1mCM <from> <to> <what> <delta>›0m
  394.  Change <what> of the balls with the numbers <from> up to and including
  395.  <to> with <delta> -> thus Change relative More.
  396.  See CR.
  397.  
  398. ›32;1m 2.9 Assignation›31;0m
  399. 0x90  ›1mI:= <value>›0m
  400.  Assign <value> to #i#. note that <value> can be an expression, too!
  401.  Try to make <value> not bigger than -1000 to 1000.
  402.  
  403. 0x91  ›1mJ:= <value>›0m
  404.  Assign <value> to #j#. note that <value> can be an expression, too!
  405.  Try to keep <value> between -1000 and 1000.
  406.  
  407. 0x92  ›1mANG:= <value>›0m
  408.  Set the AngleOfDisplay to <value>. 
  409.  <value> can range from 0 to 63, bigger or smaller (?) values are reduced until
  410.  they fit into this range, i.e. 123 will become 59.
  411.  
  412. 0x93  ›1mDAN:= <value>›0m
  413.  Set the DeltaAngleOfDisplay to <value>. 
  414.  <value> Can range between -10 and 10, but only integers are allowed. 
  415.  when negative, the object will turn anti-clockwise, when positive, the object
  416.  will turn clockwise. When zero, the object won't turn around.
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423. ›32;1m/****** 3 ********Data-line/DisplayModes*******************/›31;0m
  424. A DATA-line is different from a command-line, as it doesn't contain a command.
  425. It contains five values (NO EXPRESSIONS PLEASE). which will be loaded into the
  426. data-array. 
  427. Note that ChemniMaTe should be set in Data-mode first, using the Data <x>
  428. command, where <x> represents the number of the first ball which should be
  429. receiving the data.
  430.  
  431. ›32m3.1 DisplayMode 0›31m
  432. I advise to have the data-part ordened this way. 
  433. Example 13
  434. ›33mData 1    ;In the beginning, there was nothing.
  435. ;r   hei ang  typ lin    ;nr   which
  436.  42  -7   16 In12  02    ;01   This is one of the invisibles.
  437. EndData›31m
  438. ›32m ^   ^    ^  ^     ^     ^    ^
  439.  |›31mthe distance to the vertical axis.
  440.      ›32m|›31mdistance to floorplate.
  441.       ›32m|›31mclockwise angle.   ›32m|›31mcomment to explain what it is.
  442.          ›32m|›31mwhich ball ›32m|›31mballnr(is after ';' so it will be ignored).
  443.            ›32m|›31mline to which ballnr.
  444.  
  445. About (r,hei,ang):
  446.                      |
  447.                      |
  448.                      |
  449.                      |   ang
  450.                      |   V
  451.                      |______________
  452.                      /›33m\ ›31m_/›32m.›31m
  453.                     /   ›33m\ ›32m.›31m
  454.                    /     ›33m\›32m.›33mr›31m
  455.                   /›32m........›33m\›31m
  456.                  /        h›33m›32m\›31m©
  457.                 /
  458.                /
  459. (Or watch the Explain0.ilbm containing this picture.)
  460.  
  461. about type:
  462. (Note that only the nummerical value is important; the alphanummerical ones
  463. are ignored, as always).
  464.  
  465. code    represents        colour
  466.  
  467. C0    carbon            black
  468. S2    sulphur            yellow
  469. N4    nitrogen        blue
  470. H6    hydrogen        white
  471. O8    oxygen            red
  472. In12      invisible!!        --
  473. Cl14    chlorine        green
  474. pl16    (+) , charge of +1.6e-19 (Coulomb)
  475. mi18    (-) , charge of -1.6e-19 (Coulomb)
  476. Hr20    hydrogen        RED
  477. Hg22    hydrogen        GREEN    thus not mercury!!!
  478. R10      --            background
  479.     -=>this one is for {restgroepen}:
  480.             H O-H
  481.             | |        (just a prototype of an {aminozuur})
  482.         H-N-C-C=O
  483.           | |
  484.           H R   <-this R 
  485.  
  486. The use of Hr20 and Hr22 is for {isomerie}; then you can show how this is
  487. done. i.e. there is a difference between:
  488.  
  489.            H   H             H   H          H   H
  490.            C---C             C---C          C---C
  491.           /H  /H            /   /          /H  /H
  492.          /   /      and   H/   /    and   /  H/
  493.         C===C             C===C          C===C
  494.         H   H                 H          H
  495.  
  496. {De Nederlandse benamingen voor deze stoffen zijn:
  497.       ^                 ^              ^
  498.      trans-1-cyclobuteen    cis-1-cyclobuteen
  499. }
  500.  
  501. But we were discussing the data-line, not discussing Chemistry.
  502. A dataline should NEVER start with an alphanummerical character, as that
  503. will be interpreted as a command, and also should(??) result in a "SYNTAX
  504. ERROR".
  505. Datacommands are NOT nested, thus:
  506. Example 14
  507. ›33mData 5
  508. ;r   hei ang  typ lin    ;nr   which
  509.  42  -7   16 In12  02    ;05   This is one of the invisibles.
  510.  33  -7   34  R10  02    ;06   -(R)
  511. Data 9    ›31m;jump with data to number 9, thus skip 7 and 8.›33m
  512.  12  23   -6  C0   07    ;09   carbon.
  513. EndData›31m
  514.  
  515.  
  516. You shouldn't make the 'radius' bigger than ± 120, otherwise the ball will get 
  517. out of the screen. When a ball gets out of screen, even with only one pixel,
  518. the WHOLE ball won't be displayed and an #Warning will be generated.
  519. Also, don't make the 'height' too big.
  520.  
  521. 'Ang' should range between 0 and 63. 64 means one time around. 
  522. (higher than 64 will be interpreted as    x - n*64    to get it ranging 
  523. within [0,64>. ) 
  524.  
  525. Using a not defined 'Typ' is undefined, the results may vary each second.
  526. Having a 'lin' to a non-displayed (or non-existing) ball will result in strange
  527. lines on the screen.
  528.  
  529. ›32m3.2 DisplayMode 1›31m
  530. Well, this is easy to explain:
  531. It's the same as Displaymode 0, except that this one is 2-d. You watch along
  532. the axis around which everything turns. This implies that 'Height' has no real
  533. meaning here, but the balls are sorted to this one.
  534. In short:
  535. offset    name0    meaning
  536. 0    Radius    distance to turn-axis
  537. 1    ANGle    angle. (range between 0 and 63).
  538. 2    HEIght    ---
  539. 3    TYPe    which kind of ball
  540. 4    LINe    line to which other ball?    
  541.  
  542. ›32m3.4 DisplayMode 3›31m
  543.  Not implemented yet, but it is reserved for the displaymode designed by
  544.  Raymond Knaapen for his MS-DOS version of this programme.
  545.  
  546.  
  547.  
  548.  
  549. ›32;1m/****** 4 ***********The Errors**********************/›31;0m
  550. In this chapter I would like to discuss the errors the programme can return 
  551. to you. These are not all errors, there are some which should NEVER occur. 
  552. If they do occur, please let me know.
  553.   Normally, the error-message is followed by "IN LINE ###". In this file
  554. a number is given before the error message. This is the internal error-number,
  555. you won't ever come to see it outside the sourcecode, I hope.
  556.  
  557. Here we go:
  558.  
  559.  1  ›1m ## EndData WITHOUT Data›0m
  560. Seems you've use EndData without using Data before.
  561.  
  562.  3  ›1m ## EndRepeat/Until WITHOUT Repeat/Loop›0m
  563. You used EndRepeat or Until without specifying (the corresponding) Repeat or Loop
  564. in one of the preceding lines, or you might have made this mistake:
  565. Example 15:
  566. ›33m Loop
  567.    Repeat 5
  568.      Show 1 2 5 ; show 1 frame the balls 2 up to and including 5
  569.    Until #Ang# >= 57
  570.  EndRepeat›31m
  571. In English: you've swapped the 'Until' and 'EndRepeat'.
  572. You can't exchange the use of these four, Repeat belongs to EndRepeat, etc.
  573.  
  574. 15 ›1m ## EndSkip WITHOUT Skip›0m
  575. You used EndSkip without specifying the corresponding Skip in a preceding 
  576. line.(Or did you think Skip's could be nested?  You don't speak C ? That's 
  577. what I thought, as /* */ can't be nested, either!)
  578.  
  579. 10  ›1m ## EXPRESSION: 2 VALUES AND 1 OF: + - * /›0m
  580. An expression is written in the following way:
  581. ›33m[3 + 3]›31m where '3' can be a value,expression or var.
  582. '+' Can be replaced by '*', '/' or '-'.
  583. Seems You forgot one of these.
  584.  
  585.  9  ›1m ## EXPRESSION: DIVISION BY ZERO›0m
  586. You've tried to divide by zero.As a result this should give 'infinite'.
  587. I guess, you've tried to divide by an uninitialized var.
  588.  
  589. 16  ›1m #### EXPRESSION IN A DATA LINE›0m
  590. Isn't supported yet. Still, I prefer you not to use expressions in a
  591. script between a 'Data' and an 'EndData' command.
  592.  
  593. 11  ›1m ## EXPRESSION: UNEQUAL NUMBER OF [ AND ]›0m
  594. Take a good look. In the expression you used an unequal number of
  595. left and right brackets.
  596.  
  597.  2  ›1m ## INCORRECT VALUE(S)›0m
  598. At least one of the specified parameters is bigger or smaller than is allowed.
  599. Normally this should be the one with an expression of var in it, or you are
  600. really stupid. 
  601.  
  602.  6  ›1m ## NEEDED #, BUT GOT ONLY # VALUES›0m
  603. You gave too few values/expressions/vars.
  604.  
  605. 12  ›1m ## NOT A KNOWN VARIABLE›0m
  606. Listen carefully, I'll say this only once: there are only these vars:
  607. #i# #j# #Ang# and #dAn#. Further there are two constant factors: #On# and #Off#.
  608.  
  609.  5  ›1m ## SYNTAX ERROR›0m
  610. You might get a headache of it, but ChemniMaTe doesn't understand this line.
  611.  
  612. 13  ›1m ## VARIABLE NOT TERMINATED BY '#'›0m
  613. A var should always end with an #, as a string should end with " and an 
  614. expression should end in ].
  615.  
  616. 14  ›1m ### until : INFINITY ERROR›0m
  617. This is a neat one. The equation in the 'until <a> >= <b>' still isn't met 
  618. after INFINITYMAX (350) times. This error might help you a bit when otherwise 
  619. ChemniMaTe would have TILTed. Guess everyone will ever be grateful for this 
  620. error to appear, it stops executing the loop.
  621.  
  622.  4  ›1m # WARNING MORE / LESS THAN 5 DATA VALUES›0m
  623. You didn't specify the right number of parameters in this data-line.
  624.  
  625.  7  ›1m # WARNING: MORE THAN REQUIRED # VALUES›0m
  626. Geezz, You have specified too many values/expressions/vars.
  627.  
  628.  0  ›1m # WARNING: NOT RIGHT NUMBER OF VALUES›0m
  629. Shouldn't be in use anymore, as far as I know.
  630.  
  631.  8  ›1m # WARNING: ONE OF BALLS GOT OUT SCREEN›0m
  632. One of the balls got out of the screen.
  633. Note that an Invisible can get out of the screen, too!
  634.  
  635.  
  636.  
  637. That's it. I Hope it is, together with the examples, sufficient to teach your-
  638. self to program animations, when you encounter problems, please write to me.
  639. /* end - of - file */
  640.